16. Python 中的向量
Python 中的向量
在Python中,您可以用列表来表示一个向量。因此,像
\begin{bmatrix}5, 9, 10, 2, 20\end{bmatrix}
这样的向量可以表示如下:
myvector = [5, 9, 10 2, 20]
向量索引
你可以使用索引访问向量内部的值。本例中,第一个值 5 可用以下方式访问:
myvector[0]
第二个值:
myvector[1]
诸如此类。
赋值给向量
如果你想改变向量中的值,你可以使用下面的语法:
myvector[3] = 19
这样,我们就把第四个元素从 20 变为了 19。
要将值添加到向量的末尾,可以使用 .append() 方法:
myvector = [5, 9, 2, 20]
myvector.append(18)
结果向量为 [5, 9, 2, 20, 18]。
Python 中的向量数学
使用卡尔曼滤波器方程时,你需要熟悉一些向量运算:
-
向量加法
-
标量乘法
-
点积
向量加法
要将两个向量加在一起,请按元素将它们逐个相加。例如,
\mathbf{v_1} = [a, b, c, d]
\mathbf{v_2} = [w, x, y, z]
这两个向量的和为:
\mathbf{v_1} + \mathbf{v_2} = [a + w, b + x, c + y, d + z]
假设你知道车辆的当前状态为: \mathbf{x} = [x, y, v_x, v_y]
如果你知道车辆位置和速度的变化,就可以使用向量加法来得出新的状态向量。你会在向量代码练习中练习相关编程技巧。
代码中的向量加法
如何使用 Python 执行矢量加法?通常,for 循环对于访问 Python 列表中的值非常有用:
for i in range(len(v1)):
v1[i]
可以访问 v1,每次一个元素。因此,你可以获取 v1 和 v2 的每个值,将它们相加,然后将每个和添加到一个新的向量,如:
# 初始化空向量
vsum = []
# 使用 for 循环取一个值的总和,然后将其附加到 vsum
for ....
.....
vsum.append(value)
我们没有显示完整答案,因为你需要通过编程练习中自己完成答案。
标量乘法
标量乘法是指将一个向量中的每个元素乘以一个常量。
下面是一个完整的例子。
设 \mathbf{v} = [a, b, c, d] ,则 5\mathbf{v} = [5a, 5b, 5c, 5d]
在编码练习部分,你还有机会练习标量乘法。思考一下,如何使用 for 循环和 append 方法进行标量乘法编程。
标量乘法用例可能使用不同的测量单位。例如,如果你的状态测量单位是米,则可以使用标量乘法将其转换为英尺。准备向量编程练习一展身手吧!
点积
两个向量的点积对于矩阵乘法非常重要。设
\mathbf{v_1} = [a, b, c, d]
\mathbf{v_2} = [w, x, y, z] ,
则点积为
\mathbf{v_1 \cdot v_2} = aw+ bx + cy + dz
这是 for 循环应用的又一个例子。在下一节的练习中,你会学习如何编写点积。
通过编程练习中,你会学会如何应用点积,并了解它为什么很有用。
小结
进行编程练习之前,你需要掌握以下 Python 知识/技能:
-
向量赋值 -
myvector = [5, 9, 10 2, 20]
-
访问某个值 -
myvector[3]
-
变更某个值 -
myvector[3] = 15
-
将某个值附在列表末尾 -
myvector.append(6)
- 最后,使用 for 循环访问并操作向量:
for i in range(len(myvector)):
myvector[i]
请点击本 链接 进一步了解 Python 列表的其他相关方法。尽管你在练习时不会用到这些方法,但它们的确很有用。
接下来,你将在 Python 中练习向量编程。